<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>01_变量提升与函数提升</title>
</head>
<body>
<!-- 
1、变量声明提升
    * 通过var定义（声明）的变量，在定义语句之前就可以访问到
    * 值：undefined

2、函数声明提升
    * 通过function声明的函数，在声明之前就可以调用
    * 值：函数定义对象

3、问题：变量提升与函数提升是如何产生的
-->
<script>
/*
 a 输出多少？  undefined

一下代码相当于：

var a = 3
function fn() {
    var a
    console.log(a) // undefined
    a = 4
}

fn()

*/
var a = 3
function fn() {
    console.log(a)
    var a = 4
}

fn()

console.log(b) // undefined
fn2() // fn2

var b = 2
function fn2() {
    console.log('fn2')
}
</script>
</body>
</html>